Difference between generics and polymorphism


๋‹ต๋ณ€์— ๋”ฐ๋ฅด๋ฉด ์ œ๋„ˆ๋ฆญ์€ โ€˜Parametric polymorphismโ€™, ์˜ค๋ฒ„๋กœ๋”ฉ์— ์˜ํ•œ ๋‹คํ˜•์„ฑ์€ โ€˜ad-hoc polymorphismโ€™ ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํด๋ž˜์Šค ๊ฐ„ ์ƒ์†์œผ๋กœ ๋™์  ๋””์ŠคํŒจ์น˜์— ์˜ํ•œ ๋‹คํ˜•์„ฑ์€ โ€˜subtype polymorphismโ€™ ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฒŒ์จ ์„ธ ๊ฐ€์ง€ ์šฉ์–ด๊ฐ€ ๋‚˜์™”๋‹ค.

Parametric Polymorphism - generic

๋‹จ์ˆœํžˆ ์ฝ”๋“œ ์žฌํ™œ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ ๊ฐœ๋…์ด๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ์˜ ํ…œํ”Œ๋ฆฟ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด๋†“๊ณ  ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ•„์š”๋กœ ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ชจ๋“  ๋ฒ„์ „์„ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์ ์žฌํ•œ๋‹ค.

Ad-hoc Polymorphism - overloading

ad-hoc ์ด๋ผ๋Š” ๋ง ๋œป์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์˜๋ฏธ๊ฐ€ ์กฐ๊ธˆ ์• ๋งคํ•˜๊ธด ํ•˜๋‹ค. ์—ฌ๊ธฐ์—์„  ๊ทธ๋ƒฅ โ€˜์˜ค๋ฒ„๋กœ๋”ฉ์„ ์œ„ํ•œโ€™ ์œผ๋กœ ๋Œ€์น˜ํ•˜์—ฌ ์ƒ๊ฐํ•˜์ž.

์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ๋งˆ๋ จํ•œ ๋ถ„๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

Subtype Polymorphism - dynamic dispatch

์ƒ์†์— ์˜ํ•œ ๋™์  ๋””์ŠคํŒจ์น˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์–ธ์–ด์— ๋”ฐ๋ผ ๊ฐ€์ƒํ•จ์ˆ˜, ๋• ํƒ€์ดํ•‘ ํ˜•ํƒœ๋กœ ์ œ๊ณต์ด ๋˜๊ณ  ์žˆ๋‹ค.